package archer.kunlun.common.models.logging

import io.circe.generic.JsonCodec
import org.joda.time.DateTime

trait LoggingTypes {

  val 访问任意资源 = "访问任意资源"
  val 静态资源访问 = "静态资源访问"
  val 非静态资源访问 = "非静态资源访问"
  val 请求无效 = "请求无效"
  val 学生报名业务资源访问 = "学生报名业务资源访问"
  val 后台操作业务资源访问 = "后台操作业务资源访问"
  //val 学生登录 = "学生登录"
  //val 后台管理登录 = "后台管理登录"

  val 学生前台登录成功 = "学生前台登录成功"
  val 学生前台登录失败 = "学生前台登录失败"
  val 学生前台登出 = "学生前台登出"
  val 学生注册成功 = "学生注册成功"
  val 学生注册失败 = "学生注册失败"

  val 学生更新报考缓存信息 = "学生更新报考缓存信息"
  val 学生获取报考缓存信息 = "学生获取报考缓存信息"
  val 学生验证缓存填报数据 = "学生验证缓存填报数据"
  val 学生最终提交 = "学生最终提交"
  val 学生查看最终提交信息 = "学生查看最终提交信息"

  val 管理员后台登录成功 = "管理员后台登录成功"
  val 管理员后台登录失败 = "管理员后台登录失败"
  val 管理员后台登出 = "管理员后台登出"

  val 程序异常 = "程序异常"

}

object LoggingTypes extends LoggingTypes {
  var needLogging: Boolean = true
}

@JsonCodec
case class 请求信息(
  用户IP: String,
  用户Host: String,
  请求Uri: String,
  请求方法: String,
  响应时间毫秒: Long,
  返回状态码: Int,
  请求头: Seq[(String, String)],
  override val 发生时间: String = new DateTime().toString())
  extends 发生时间

@JsonCodec
case class 程序异常(
  额外信息: String,
  提示信息: String,
  异常信息: String,
  override val 发生时间: String = new DateTime().toString())
  extends 发生时间

trait 发生时间 {
  val 发生时间: String
}

trait 账号登录 {
  val 输入账号: String
}
